package modelo;

import org.junit.Test;
import java.util.*;

import junit.framework.Assert;
	


public class MovimientoEnDireccionTest {

	List<Coordenada> posicionesAMover;
	Movimiento movimiento;
	
	@Test
	public void testMovimientoAlNorte() {
		
		
		movimiento = new MovimientoAlNorte();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getY(), 4);
		Assert.assertEquals(segundaPosicion.getY(), 5);
	
	}
	
	@Test
	public void testMovimientoAlSur() {
		
		
		movimiento = new MovimientoAlSur();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getY(), 6);
		Assert.assertEquals(segundaPosicion.getY(), 7);
	
	}
	
	@Test
	public void testMovimientoAlEste() {
		
		
		movimiento = new MovimientoAlEste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 6);
		Assert.assertEquals(segundaPosicion.getX(), 6);
	
	}


	@Test
	public void testMovimientoAlOeste() {
		
		
		movimiento = new MovimientoAlOeste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 4);
		Assert.assertEquals(segundaPosicion.getX(), 4);
	
	}
	

	@Test
	public void testMovimientoAlNoroeste() {
		
		
		movimiento = new MovimientoAlNoroeste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 4);
		Assert.assertEquals(segundaPosicion.getX(), 4);
		Assert.assertEquals(primerPosicion.getY(), 4);
		Assert.assertEquals(segundaPosicion.getY(), 5);
	
	}

	@Test
	public void testMovimientoAlSureste() {
		
		
		movimiento = new MovimientoAlSureste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 6);
		Assert.assertEquals(segundaPosicion.getX(), 6);
		Assert.assertEquals(primerPosicion.getY(), 6);
		Assert.assertEquals(segundaPosicion.getY(), 7);
	
	}
	
	@Test
	public void testMovimientoAlNoreste() {
		
		
		movimiento = new MovimientoAlNoreste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 6);
		Assert.assertEquals(segundaPosicion.getX(), 6);
		Assert.assertEquals(primerPosicion.getY(), 4);
		Assert.assertEquals(segundaPosicion.getY(), 5);
	
	}
	
	@Test
	public void testMovimientoAlSuroeste() {
		
		
		movimiento = new MovimientoAlSuroeste();
		posicionesAMover = new LinkedList<Coordenada>();
		Coordenada primerPosicion = new Coordenada(5,5);
		Coordenada segundaPosicion = new Coordenada(5,6);
		posicionesAMover.add(primerPosicion);
		posicionesAMover.add(segundaPosicion);
		
		Assert.assertTrue(movimiento.mover(posicionesAMover));
		primerPosicion = posicionesAMover.get(0);
		segundaPosicion = posicionesAMover.get(1);
		
		Assert.assertEquals(primerPosicion.getX(), 4);
		Assert.assertEquals(segundaPosicion.getX(), 4);
		Assert.assertEquals(primerPosicion.getY(), 6);
		Assert.assertEquals(segundaPosicion.getY(), 7);
	
	}

}
